<template>
  <el-upload
    class="avatar-uploader"
    action="/api/upload.ts"
    :show-file-list="false"
    :on-success="handleAvatarSuccess"
    :before-upload="beforeAvatarUpload"
  >
    <img v-if="imageUrl" :src="imageUrl" class="avatar">
    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  </el-upload>
</template>

<script>
  import {defineComponent, ref} from 'vue'

  export default defineComponent({
    name: "Upload",
    setup() {
      let imageUrl = ref('');

      function handleAvatarSuccess(res, file) {
        console.log('成功', res, file);
        imageUrl.value = URL.createObjectURL(file.raw);
      }

      function beforeAvatarUpload(file) {
        const isJPG = file.type === 'image/jpeg';
        const isLt2M = file.size / 1024 / 1024 < 2;

        if (!isJPG) {
          this.$message.error('上传头像图片只能是 JPG 格式!');
        }
        if (!isLt2M) {
          this.$message.error('上传头像图片大小不能超过 2MB!');
        }
        return isJPG && isLt2M;
      }

      return {
        imageUrl, handleAvatarSuccess, beforeAvatarUpload
      }

    }
  })
</script>

<style scoped>

</style>
